External এবং Pin Change Interrupts এর উদাহরণ

Computer Programming - আরডুইনো (Arduino) Interrupts এবং Timer Functions (Interrupts and Timer Functions in Arduino) |
220
220

Arduino-তে Interrupts একটি গুরুত্বপূর্ণ ফিচার যা একটি নির্দিষ্ট ইভেন্টের উপর ভিত্তি করে প্রোগ্রামকে স্থগিত করে এবং একটি নির্দিষ্ট ফাংশনকে চালু করে। এতে প্রোগ্রাম দ্রুত সাড়া দিতে পারে। Arduino-তে দুটি প্রধান ধরনের Interrupts রয়েছে: External Interrupts এবং Pin Change Interrupts

External Interrupts

External Interrupts তখন ব্যবহৃত হয় যখন একটি আউটসাইড ডিভাইস (যেমন বাটন) কোনো সিগন্যাল পাঠায়। Arduino-তে সাধারণত INT0 (পিন 2) এবং INT1 (পিন 3) ব্যবহার করা হয়।

উদাহরণ: External Interrupt

volatile bool buttonPressed = false;

void setup() {
  pinMode(2, INPUT_PULLUP); // পিন 2 ইনপুট হিসেবে কনফিগার করা
  attachInterrupt(digitalPinToInterrupt(2), buttonISR, FALLING); // পিন 2 এ ইন্টারাপ্ট যুক্ত করা
  Serial.begin(9600);
}

void loop() {
  if (buttonPressed) {
    Serial.println("Button was pressed!");
    buttonPressed = false; // ইন্টারাপ্ট ফ্ল্যাগ রিসেট করা
  }
}

void buttonISR() {
  buttonPressed = true; // ইন্টারাপ্ট ফ্ল্যাগ সেট করা
}

কোড বিশ্লেষণ

  • volatile: ভেরিয়েবলটি ইন্টারাপ্ট ফাংশনের দ্বারা পরিবর্তিত হচ্ছে, তাই এটি volatile হিসেবে ডিফাইন করা হয়েছে যাতে প্রধান লুপে সঠিকভাবে পড়া যায়।
  • attachInterrupt(): এই ফাংশনটি পিন 2-তে একটি ইন্টারাপ্ট যুক্ত করে, যা পিনের মান FALLING (নিচের দিকে পরিবর্তন) হলে buttonISR ফাংশনটি কল করে।
  • buttonISR(): ইন্টারাপ্ট ফাংশনটি ব্যতীত, এটি একটি ফ্ল্যাগ সেট করে যাতে মূল লুপে বোতাম চাপার তথ্য পাওয়া যায়।

Pin Change Interrupts

Pin Change Interrupts তখন ব্যবহৃত হয় যখন কোনো পিনের মান পরিবর্তন হয় (HIGH থেকে LOW বা LOW থেকে HIGH)। Arduino-তে সমস্ত ডিজিটাল পিনে Pin Change Interrupts সক্রিয় করা যায়।

উদাহরণ: Pin Change Interrupt

volatile bool ledState = false;

void setup() {
  pinMode(8, INPUT_PULLUP); // পিন 8 ইনপুট হিসেবে কনফিগার করা
  pinMode(13, OUTPUT); // পিন 13 আউটপুট হিসেবে কনফিগার করা
  PCMSK |= (1 << PCINT0); // পিন 8 এ পিন চেঞ্জ ইন্টারাপ্ট সক্রিয় করা
  GIMSK |= (1 << PCIE); // পিন চেঞ্জ ইন্টারাপ্ট সক্রিয় করা
  sei(); // গ্লোবাল ইন্টারাপ্ট সক্রিয় করা
}

void loop() {
  // লুপ খালি রাখা হয়েছে
}

ISR(PCINT0_vect) {
  ledState = !ledState; // LED স্টেট পরিবর্তন
  digitalWrite(13, ledState); // LED এর স্টেট পরিবর্তন করা
}

কোড বিশ্লেষণ

  • PCMSK এবং GIMSK: পিন চেঞ্জ ইন্টারাপ্টস সক্রিয় করার জন্য পোর্ট এবং গ্লোবাল ইন্টারাপ্ট সেটিংস কনফিগার করা হয়।
  • sei(): গ্লোবাল ইন্টারাপ্ট সক্রিয় করা।
  • ISR(PCINT0_vect): এই ফাংশনটি পিন চেঞ্জ ইভেন্টের সময় কল হয়, যেখানে LED এর স্টেট পরিবর্তন করা হয়।

সারসংক্ষেপ

  • External Interrupts সাধারণত বোতাম বা অন্যান্য বাহ্যিক ডিভাইসের জন্য ব্যবহৃত হয়, যা সরাসরি পিনে সিগন্যাল পাঠায়।
  • Pin Change Interrupts বিভিন্ন ডিজিটাল পিনে পরিবর্তন হলে কাজ করে এবং একাধিক পিনের পরিবর্তন ট্র্যাক করতে সহায়ক।

Arduino-তে ইন্টারাপ্ট ব্যবহার করার মাধ্যমে, আপনি প্রোগ্রামকে দ্রুত এবং কার্যকরভাবে সাড়া দিতে সক্ষম হবেন, যা আপনার প্রকল্পের কার্যকারিতা উন্নত করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion